A multi-master system is a system where a single piece of information in a data repository can be updated by multiple master servers. The use of multiple master servers enhances the reliability of a system. If one master server fails, other master servers will continue to update the data repository. Master servers can be located in several physical sites, i.e., distributed across a network, to manage a data repository. An example of a master server is a Lightweight Directory Access Protocol (LDAP) directory server, which manages an LDAP directory stored in a data repository. LDAP is a standard computer networking protocol for querying and modifying entries in an LDAP directory. The LDAP directory may contain any sort of data, but most commonly contain identity, contact and authorization information for people and organizations. Access to data in an LDAP directory is provided by an LDAP server, which responds to commands from an LDAP client. For example, a client may create a new entry, delete an entry, rename an entry, modify an entry, or (most commonly) retrieve the attributes in an entry.
An LDAP directory presents a hierarchical view of the data in a data repository. Records are presented as a tree of entries, each entry identified uniquely within the hierarchy by its Distinguished Name (“DN”). Entries contain one or more attributes, which consist of an attribute description (an attribute type with zero or more options), plus one or more values of the attribute. For example, an attribute type might be “givenName”, and its value might be a text string that is the given name of a person described by the record.
In a multi-master environment where each master server is an LDAP directory server, it is often more efficient for a client to submit an LDAP request to a nearby master server. The request may involve the assignment of a unique numeric value, such as a user ID for a new user account. Conventionally, each master server is allocated with a unique range of values that can be assigned to the clients. When a master server exhausts its range of values, it will reject the requests for new value assignments. However, other master servers may still have plenty of available values. As a result, administrator action is often necessary to manually redistribute the values evenly among the master servers. Thus, there is a need to develop operational techniques that can coordinate the allocation of numeric values among multiple master servers.